package model;

import java.io.Serializable;

import java.math.BigDecimal;

import java.sql.Timestamp;

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;

@Entity
@NamedQueries( { @NamedQuery(name = "Mantencion.findAll", query = "select o from Mantencion o") })
public class Mantencion implements Serializable {
    @Column(length = 20)
    private String estado;
    @Column(name = "FECHA_ENTRADA", nullable = false)
    private Timestamp fechaEntrada;
    @Column(name = "FECHA_SALIDA")
    private Timestamp fechaSalida;
    @Id
    @Column(nullable = false)
    private BigDecimal folio;
    @Column(name = "KM_ENTRADA", nullable = false)
    private BigDecimal kmEntrada;
    @Column(name = "KM_SALIDA", nullable = false)
    private BigDecimal kmSalida;
    @Column(name = "TIPO_MANTENCION", nullable = false, length = 20)
    private String tipoMantencion;
    @ManyToOne
    @JoinColumn(name = "RUT_CONDUCTOR")
    private Conductor conductor;
    @OneToMany(mappedBy = "mantencion")
    private List<DetalleMantencion> detalleMantencionList1;
    @ManyToOne
    @JoinColumn(name = "PATENTE")
    private Vehiculo vehiculo1;
    @ManyToOne
    @JoinColumn(name = "ID_TALLER")
    private Taller taller1;

    public Mantencion() {
    }

    public Mantencion(String estado, Timestamp fechaEntrada, Timestamp fechaSalida, BigDecimal folio, Taller taller1,
                      BigDecimal kmEntrada, BigDecimal kmSalida, Vehiculo vehiculo1, Conductor conductor,
                      String tipoMantencion) {
        this.estado = estado;
        this.fechaEntrada = fechaEntrada;
        this.fechaSalida = fechaSalida;
        this.folio = folio;
        this.taller1 = taller1;
        this.kmEntrada = kmEntrada;
        this.kmSalida = kmSalida;
        this.vehiculo1 = vehiculo1;
        this.conductor = conductor;
        this.tipoMantencion = tipoMantencion;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public Timestamp getFechaEntrada() {
        return fechaEntrada;
    }

    public void setFechaEntrada(Timestamp fechaEntrada) {
        this.fechaEntrada = fechaEntrada;
    }

    public Timestamp getFechaSalida() {
        return fechaSalida;
    }

    public void setFechaSalida(Timestamp fechaSalida) {
        this.fechaSalida = fechaSalida;
    }

    public BigDecimal getFolio() {
        return folio;
    }

    public void setFolio(BigDecimal folio) {
        this.folio = folio;
    }


    public BigDecimal getKmEntrada() {
        return kmEntrada;
    }

    public void setKmEntrada(BigDecimal kmEntrada) {
        this.kmEntrada = kmEntrada;
    }

    public BigDecimal getKmSalida() {
        return kmSalida;
    }

    public void setKmSalida(BigDecimal kmSalida) {
        this.kmSalida = kmSalida;
    }


    public String getTipoMantencion() {
        return tipoMantencion;
    }

    public void setTipoMantencion(String tipoMantencion) {
        this.tipoMantencion = tipoMantencion;
    }

    public Conductor getConductor() {
        return conductor;
    }

    public void setConductor(Conductor conductor) {
        this.conductor = conductor;
    }

    public List<DetalleMantencion> getDetalleMantencionList1() {
        return detalleMantencionList1;
    }

    public void setDetalleMantencionList1(List<DetalleMantencion> detalleMantencionList1) {
        this.detalleMantencionList1 = detalleMantencionList1;
    }

    public DetalleMantencion addDetalleMantencion(DetalleMantencion detalleMantencion) {
        getDetalleMantencionList1().add(detalleMantencion);
        detalleMantencion.setMantencion(this);
        return detalleMantencion;
    }

    public DetalleMantencion removeDetalleMantencion(DetalleMantencion detalleMantencion) {
        getDetalleMantencionList1().remove(detalleMantencion);
        detalleMantencion.setMantencion(null);
        return detalleMantencion;
    }

    public Vehiculo getVehiculo1() {
        return vehiculo1;
    }

    public void setVehiculo1(Vehiculo vehiculo1) {
        this.vehiculo1 = vehiculo1;
    }

    public Taller getTaller1() {
        return taller1;
    }

    public void setTaller1(Taller taller1) {
        this.taller1 = taller1;
    }
}
